<div id="content">
	<h1>配置应用</h1>
	<p class="mg_t_10">
	　　应用是指请求处理中的执行上下文。它的主要任务是分析用户请求并将其分派到合适的控制器中以作进一步处理。<br />　　它同时作为服务中心，维护应用级别的配置。鉴于此，应用也叫做<strong>前端控制器</strong>。<br />

	　　应用由 <strong>入口脚本</strong> 创建为一个单例对象。这个应用单例对象可以在任何地方通过 <strong>D::app()</strong> 访问。<br />
	　　默认情况下，应用是一个 <strong>dpApplication</strong> 的实例。要自定义应用，我们通常需要提供一个配置文件（或数组）以创建应用实例时初始化其属性值。

配置是一个键值对数组。每个键代表应用实例中某属性的名字，每个值即相应属性的初始值。 例如，如下的配置设定了应用的 <strong>default_control</strong> 和 <strong>default_action</strong> 属性。
	</p>
	<pre class="syntax php">&lt;?php
	array(
		'default_control' => 'index',
		'default_action'  => 'index',
	);
?&gt;</pre>
	<p class="mg_t_10">
	　　我们通常在一个单独的 PHP 脚本（<strong>config/config.php</strong>）中保存这些配置。在脚本中， 我们通过以下方式返回此配置数组：
	<p>
	<pre class="syntax php">&lt;?php
	return array(...);
?&gt;</pre>
	<p class="mg_t_10">
	　　要应用此配置，我们将配置文件的名字作为参数传递给应用的构造器，或像下面这样传递到 <strong>D::createApplication()</strong> 。这通常在 <strong>入口脚本</strong> 中完成：
	</p>
	<pre class="syntax php">&lt;?php
	D::createApplication($config);
?&gt;</pre>
	<div class="clear mg_t_20"></div>
	<div class="notice">
		提示: 如果应用配置非常复杂，我们可以把它分割为若干文件，每个文件返回配置数组中的一部分。 然后，在主配置文件中，我们调用PHP的 <strong>include()</strong> 包含其余的配置文件并把它们合并为一个完整的配置数组。
	</div>
	<div class="clear mg_t_10"></div>
	<h1>应用组件</h1>
	<p class="mg_t_10">
	　　应用的功能可以通过其灵活的组件结构轻易地自定义或增强。应用管理了一系列应用组件，每个组件实现一特定功能。 例如，<strong>dpUrlConfig</strong> 来解析URL和处理路由。<br />

	　　通过配置应用的 <strong>components</strong> 属性， 我们可以自定义应用中用到的任何组件类及其属性值。例如，我们可以配置应用的 <strong>db</strong> 组件， 这样，我们就可以使用数据库：
	</p>
	<pre class="syntax php">&lt;?php
	array(
	    ......
	    'components'=>array(
	        ......
	        'db'=>array(
	            'class' => 'dpDbCommand',
	            'master' => array(
					'driver'   => 'pdo:mysql',
					'host'	   => 'localhost',
					'username' => 'root',
					'passwd'   => '',
					'dbname'   => 'test',
					'charset'  => 'utf8',
					'prefix'   => 'dp_',
				),
	        ),
	    ),
	);
?&gt;</pre>
	<p class="mg_t_10">
	　　如上所示，我们在 <strong>components</strong> 数组中添加了 <strong>db</strong> 元素。<strong>db</strong> 元素表明此组件的类是 <strong>dpDbCommand</strong>, 他的 master 属性应依此初始化。<br />

	　　要访问一个应用组件，使用 <strong>D::app()->ComponentID()</strong> ，其中的 <strong>ComponentID</strong> 是指组件的ID，例如 <strong>D::app()->db()</strong>
	</p>
	<div class="notice">
		提示: 默认情况下，应用组件会按需创建。这意味着一个应用的组件如果没有在一个用户请求中被访问，它可能根本不被创建。 因此，如果一个应用配置了很多组件，其总体性能并不会下降。
	</div>
</div>
<script type="text/javascript">
$(function() {
	jQuery.syntax();
});
</script>